package com.kaifamiao.www.ioDemo.do0921;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {

    public static void main(String[] args) throws IOException {

        /**
         * File 类常用方法
         */
        String folderPath = "E:\\kaifamiao\\workspace\\idea--space\\io";
        String fileName = "test.txt";
        createFolder(folderPath);
        System.out.println("创建目录完毕");
        createFile(folderPath,fileName);
        System.out.println("创建文件完毕");
        listFile("E:\\kaifamiao\\workspace\\idea--space");
        System.out.println("显示目录和文件完毕");
        listDisk();
        System.out.println("罗列磁盘信息完毕");
//        deleteFile("E:\\kaifamiao\\workspace\\idea--space\\io\\test.txt");
//        System.out.println("文件已删除");
       fileInfo("E:\\kaifamiao\\workspace\\idea--space\\io","test.txt");
        System.out.println("显示文件信息完毕");
    }

    /**
     * 显示文件信息
     */
    private static void fileInfo(String path,String filename) {
        File file = new File(path, filename);
        System.out.println("文件大小=" + file.length() + "byte");
        System.out.println("文件最后修改日期" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss:SSS").format(new Date(file.lastModified())));
    }

    /**
     * 删除文件
     * @param fileFullName
     */
    private static void deleteFile(String fileFullName) {
        File file = new File(fileFullName);
        if (!file.exists()){
            System.out.println("文件不存在");
            return;
        }
        if (!file.isFile()){
            System.out.println(fileFullName + "不是文件，停止删除");
        }
        if (file.canExecute()){
            //canExecute 判断是否有权限删除
            file.delete();
        } else {
            System.out.println("没有删除权限");
        }
    }

    /**
     * 显示系统盘符和磁盘空间
     */
    private static void listDisk() {
        File[] files = File.listRoots();
        //listRoots()获取所有盘符
        if (files != null && files.length > 0){
            for (int i = 0;i < files.length;i++){
                System.out.println("磁盘："+files[i]);
                System.out.println("\t磁盘大小" +files[i].getTotalSpace()/1000/1000/1000 +"G");
                System.out.println("\t磁盘剩余空间" + files[i].getFreeSpace()/1000/1000/1000 +"G");
            }
        }
    }

    /**
     * 显示指定目录下的子目录和文件
     */
    private static void listFile(String diskname) {
        File file = new File(diskname);
        //listFiles() 获取指定目录中的子目录和文件
        File[] files= file.listFiles();
        if (files != null&&files.length >0){
            //判断是否有目录或文件
            for(int i = 0; i < files.length;i++){
                //isDirectory()判断File对象指向的是否是目录
                if (files[i].isDirectory()){
                    System.out.println("目录名："+files[i].getAbsolutePath());
                }
                //isFile()方法用于判断File对象
                if (files[i].isFile()){
                    System.out.println("这是文件"+files[i].getName());
                }
            }
        }
    }

    /**
     * 创建文件
     * @param folderPath
     * @param fileName
     */
    private static void createFile(String folderPath, String fileName) throws IOException {
        File file = new File(folderPath, fileName);
        if (!file.exists()){
            //createNewFile创建文件
            file.createNewFile();
        }
    }

    /**
     * 创建目录
     * @param folderPath
     */
    private static void createFolder(String folderPath) {
        File file = new File(folderPath);
        /**
         * exists 判断文件是否存在
         * mkdirs 创建多级目录
         */
        if (!file.exists()){
            file.mkdirs();
        }
    }

}
